package it.unipd.dei.bd.icineasti.database;

import it.unipd.dei.bd.icineasti.resource.Noleggio;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * Aggiorna o inserisce nel database le informazioni sul fornitore
 *
 * @author Coccato Mattia
 */
public class CreaOAggiornaNoleggioDatabase {
	
	private static final String STATEMENT_INSERT = "INSERT INTO Noleggio (codicefilm, datainizio, datafine, prezzo, pIVAFornitore, in2d, in3d) VALUES (?, ?, ?, ?, ?, ?, ?)";
	private static final String STATEMENT_UPDATE = "UPDATE Noleggio SET datafine = ?, prezzo = ?, pIVAFornitore = ?, in2d = ?, in3d = ? WHERE codiceFilm = ? AND dataInizio = ?";
	

	private final Connection con;

	private final Noleggio noleggio;

	public CreaOAggiornaNoleggioDatabase (Connection con, Noleggio noleggio) {
		this.con = con;
		this.noleggio = noleggio;
	}

	public void inserisciNoleggio() throws SQLException {

		PreparedStatement pstmt = null;

		try {
			pstmt = con.prepareStatement(STATEMENT_INSERT);

			pstmt.setInt(1, noleggio.getCodiceFilm());
			pstmt.setDate(2, noleggio.getDataInizio());
			pstmt.setDate(3, noleggio.getDataFine());
			pstmt.setBigDecimal(4, noleggio.getPrezzo());
			pstmt.setString(5, noleggio.getPartitaIvaFornitore());
			pstmt.setBoolean(6, noleggio.getIsIn2D());
			pstmt.setBoolean(7, noleggio.getIsIn3D());

			pstmt.execute();

		} finally {
			if (pstmt != null) {
				pstmt.close();
			}

			con.close();
		}


	}

	public void aggiornaNoleggio() throws SQLException {

		PreparedStatement pstmt = null;

		try {
			
			pstmt = con.prepareStatement(STATEMENT_UPDATE);


			pstmt.setDate(1, noleggio.getDataFine());
			pstmt.setBigDecimal(2, noleggio.getPrezzo());
			pstmt.setString(3, noleggio.getPartitaIvaFornitore());
			pstmt.setBoolean(4, noleggio.getIsIn2D());
			pstmt.setBoolean(5, noleggio.getIsIn3D());
			pstmt.setInt(6, noleggio.getCodiceFilm());
			pstmt.setDate(7, noleggio.getDataInizio());

			pstmt.execute();

		} finally {
			if (pstmt != null) {
				pstmt.close();
			}

			con.close();
		}

	}
}
